export const themes = {
  light: {
    primary: '#3cc51f',
    background: '#ffffff',
    text: '#333333',
    cardBackground: '#ffffff'
  },
  dark: {
    primary: '#4cd964',
    background: '#1c1c1e',
    text: '#ffffff',
    cardBackground: '#2c2c2e'
  }
}

// 全局主题管理
export const themeManager = {
  // 应用主题
  applyTheme(themeName) {
    try {
      // 保存主题设置到本地存储
      uni.setStorageSync('theme', themeName);
      
      // 获取主题颜色
      const colors = themes[themeName] || themes.light;
      
      // 根据平台采用不同的主题应用策略
      
      // 在H5环境下使用document API设置CSS变量
      // #ifdef H5
      setTimeout(() => {
        try {
          document.documentElement.style.setProperty('--primary-color', colors.primary);
          document.documentElement.style.setProperty('--background-color', colors.background);
          document.documentElement.style.setProperty('--text-color', colors.text);
          document.documentElement.style.setProperty('--card-background-color', colors.cardBackground);
          
          // 设置body样式
          document.body.style.backgroundColor = colors.background;
          document.body.style.color = colors.text;
        } catch (e) {
          console.error('设置CSS变量失败:', e);
        }
      }, 0);
      // #endif
      
      // 使用uni API设置样式（适用于所有平台）
      setTimeout(() => {
        try {
          // 设置TabBar样式
          uni.setTabBarStyle({
            backgroundColor: colors.background,
            color: themeName === 'dark' ? '#8F8F8F' : '#7A7E83',
            selectedColor: colors.primary,
            borderStyle: themeName === 'dark' ? 'black' : 'white'
          });
          
          // 设置导航栏样式
          uni.setNavigationBarColor({
            frontColor: themeName === 'dark' ? '#ffffff' : '#000000',
            backgroundColor: colors.background,
            animation: {
              duration: 300,
              timingFunc: 'easeIn'
            }
          });
        } catch (e) {
          console.error('设置uni样式失败:', e);
        }
      }, 0);
      
      // 通过全局事件通知所有页面更新主题
      uni.$emit('themeChange', {
        theme: themeName,
        colors: colors
      });
      
      return colors;
    } catch (error) {
      console.error('应用主题失败:', error);
      return themes.light; // 返回默认主题
    }
  },
  
  // 获取当前主题
  getCurrentTheme() {
    try {
      return uni.getStorageSync('theme') || 'light';
    } catch (error) {
      console.error('获取当前主题失败:', error);
      return 'light'; // 出错时返回默认主题
    }
  },
  
  // 切换主题
  toggleTheme() {
    try {
      const currentTheme = this.getCurrentTheme();
      const newTheme = currentTheme === 'light' ? 'dark' : 'light';
      return this.applyTheme(newTheme);
    } catch (error) {
      console.error('切换主题失败:', error);
      return themes.light; // 出错时返回默认主题
    }
  }
} 